package cn.wolfcode.domain;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

@Data
public class Notice {

    public static final int STATUS_TYPE_APPOINT = 0;  // 级别 (普通) 是否已读(否) 发布状态(否)
    public static final int STATUS_TYPE_PERFORM = 1;  // 级别 (重要) 是否已读(是) 发布状态(是)
    public static final int STATUS_TYPE_CONSUME = 2;  // 级别 (紧急)

    /** */
    private Long id;

    /** 公告标题*/
    private String name;

    /** 公告内容*/
    private String content;

    /** 创建人*/
    private String creator;

    /** 常见时间*/
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JSONField(format = "yyyy-MM-dd")  //在JSON.toJSONString(this);时候有效
    private Date creationTime;

    /** 公告级别*/
    private Integer grade = STATUS_TYPE_APPOINT;

    /** 是否已读*/
    private Integer haveRead = STATUS_TYPE_APPOINT;

    /** 发布状态*/
    private Integer postStatus = STATUS_TYPE_APPOINT;

    public String getGradeDisplay(){
        switch (grade){
            case STATUS_TYPE_APPOINT : return "普通";
            case STATUS_TYPE_PERFORM : return "重要";
            case STATUS_TYPE_CONSUME : return "紧急";
            default: return "异常状态";
        }
    }

    public String getHaveReadDisplay(){
        switch (haveRead){
            case STATUS_TYPE_APPOINT : return "未读";
            case STATUS_TYPE_PERFORM : return "已读";
            default: return "异常状态";
        }
    }

    public String getPostStatusDisplay(){
        switch (postStatus){
            case STATUS_TYPE_APPOINT : return "未发布";
            case STATUS_TYPE_PERFORM : return "已发布";
            default: return "异常状态";
        }
    }

    public String toJson() {
        return JSON.toJSONString(this);
    }
}